Linux: mount exFAT volumes with the in-kernel driver#1822
Linux: mount exFAT volumes with the in-kernel driver#1822ElCruncharino wants to merge 2 commits into
Conversation
Same idea as the existing NTFS kernel-driver option: mount.exfat on most distros is a symlink to the FUSE exfat-fuse helper, even though the kernel has had a native exfat driver for years. Add --filesystem=kernel-exfat, -m kernelexfat, and a preferences checkbox to mount with -i and skip the helper.
|
Thank you for the comprehensive implementation.
Please also test the case where no driver is available, the case where module loading is blocked by system policy, both the native device mapper path and the |
Only run blkid -p once per mount instead of once per kernel-driver preference, and require Linux 5.7+ before trusting a registered exfat filesystem type so we don't pick up an old staging or vendor driver by mistake. Also cleaned up the docs to name the actual mount.exfat-fuse helper and dropped the unverified suspend/hibernate claim.
|
Thanks for the review. Pushed a fixup for both points:
Also fixed the docs to name the actual helper ( Tested end-to-end on openSUSE Tumbleweed, kernel 7.1.2, with a real built binary and a real exFAT-formatted volume:
|
Problem
On Linux,
mount.exfatis usually a symlink tomount.exfat-fuse. The kernel has had a native exfat driver since 5.7, but VeraCrypt (like a plainmount -t exfat) always ends up on the FUSE path. It's pretty slow for anything beyond small volumes.This mirrors the existing NTFS kernel-driver option, which solves the same problem for NTFS. exFAT currently has no equivalent.
Change
Adds
MountExfatWithKernelDriver, mirroringMountNtfsWithKernelDriver:--filesystem=kernel-exfat/-m kernelexfaton the CLIblkid -p, and if exFAT is detected and no filesystem type was given, mounts with-isomount(8)skips the FUSE helperexFAT has no similar
ntfs/ntfs3split, so there's only one kernel driver name to select.Opt-in, off by default. Default mount behavior is unchanged.
Testing
Built and tested on openSUSE Tumbleweed (kernel 7.1, wxWidgets 3.2.8):
--filesystem=kernel-exfatmounts natively (mountshowstype exfat, notfuseblk)-m kernelexfatautodetect does the samekernel-exfatas a create-time type, same askernel-ntfs